#include "protocol.hpp"
#include "ServerCal.hpp"
#include "TcpServer.hpp" 
#include <unistd.h>

static void Usage(const std::string &proc)
{
    std::cout<<"\nUsage:"<<proc<<"port\n"<<std::endl;
}

int main(int argc,char * argv[])
{
    if(argc!=2)
    {
        Usage(argv[0]);
        exit(0);
    }
    uint16_t port=std::stoi(argv[1]);
    ServerCal cal;
    TcpServer* tsv=new TcpServer(port,std::bind(&ServerCal::Calculator, &cal, std::placeholders::_1));
    tsv->ServerInit();
    daemon(0,0);  ///守护进程
    tsv->Start();


    // Request req(123,456,'+');
    // std::string contect;
    // //序列化
    // req.Serialize(&contect);
    
    // //构建报文
    // contect=Encode(contect);
    // std::cout<<contect<<std::endl;

    // std::string message;
    // //反序列化
    // Decode(contect,&message);
    // std::cout<<message<<std::endl;

    // Request reqt;
    // reqt.DeSerialize(message);
    // std::cout<<reqt._x<<std::endl;
    // std::cout<<reqt._y<<std::endl;
    // std::cout<<reqt._op<<std::endl;

    // std::cout<<"----------------------------------------"<<std::endl;

    // Respond res(10000,0);
    // contect="";
    // //序列化
    // res.Serialize(&contect);

    // //构建报文
    // contect=Encode(contect);
    // std::cout<<contect<<std::endl;

    // message="";
    // //反序列化
    // Decode(contect,&message);
    // std::cout<<message<<std::endl;

    // Respond resd;
    // resd.DeSerialize(message);
    // std::cout<<resd._result<<std::endl;
    // std::cout<<resd._code<<std::endl;

    return 0;
}